package org.jsola.hr.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.core.vo.BaseVO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import static org.jsola.core.example.BaseExample.E_GMT_CREATE;
import static org.jsola.core.example.BaseExample.E_GMT_MODIFIED;
import static org.jsola.core.example.BaseExample.E_ID;
import static org.jsola.core.example.BaseExample.N_GMT_CREATE;
import static org.jsola.core.example.BaseExample.N_GMT_MODIFIED;
import static org.jsola.core.example.BaseExample.N_ID;
import static org.jsola.hr.example.EmpSocInfoExample.E_ACCUMULATION_FUND_FINE;
import static org.jsola.hr.example.EmpSocInfoExample.E_BUSINESS_TYPE;
import static org.jsola.hr.example.EmpSocInfoExample.E_COMPANY_ID;
import static org.jsola.hr.example.EmpSocInfoExample.E_COMPANY_PF_AMOUNT;
import static org.jsola.hr.example.EmpSocInfoExample.E_COMPANY_SOC_AMOUNT;
import static org.jsola.hr.example.EmpSocInfoExample.E_EMP_ID;
import static org.jsola.hr.example.EmpSocInfoExample.E_EMP_ME_STATUS;
import static org.jsola.hr.example.EmpSocInfoExample.E_EMP_PF_STATUS;
import static org.jsola.hr.example.EmpSocInfoExample.E_EMP_SOC_STATUS;
import static org.jsola.hr.example.EmpSocInfoExample.E_GROUP_ID;
import static org.jsola.hr.example.EmpSocInfoExample.E_MONTH;
import static org.jsola.hr.example.EmpSocInfoExample.E_MONTH_ID;
import static org.jsola.hr.example.EmpSocInfoExample.E_PAY_COST_TYPE;
import static org.jsola.hr.example.EmpSocInfoExample.E_PERSONAL_PF_AMOUNT;
import static org.jsola.hr.example.EmpSocInfoExample.E_PERSONAL_SOC_AMOUNT;
import static org.jsola.hr.example.EmpSocInfoExample.E_PLAN_FLAG;
import static org.jsola.hr.example.EmpSocInfoExample.E_PROG_ID;
import static org.jsola.hr.example.EmpSocInfoExample.E_REFUNDS_BEGIN_TIME;
import static org.jsola.hr.example.EmpSocInfoExample.E_REFUNDS_END_TIME;
import static org.jsola.hr.example.EmpSocInfoExample.E_REFUNDS_TYPE;
import static org.jsola.hr.example.EmpSocInfoExample.E_SERVICE_COST;
import static org.jsola.hr.example.EmpSocInfoExample.E_SOCIAL_SECURITY_FINE;
import static org.jsola.hr.example.EmpSocInfoExample.E_SUPPLEMENT_TYPE;
import static org.jsola.hr.example.EmpSocInfoExample.E_WHETHER_LEAVE;
import static org.jsola.hr.example.EmpSocInfoExample.E_YEAR;
import static org.jsola.hr.example.EmpSocInfoExample.N_ACCUMULATION_FUND_FINE;
import static org.jsola.hr.example.EmpSocInfoExample.N_BUSINESS_TYPE;
import static org.jsola.hr.example.EmpSocInfoExample.N_COMPANY_ID;
import static org.jsola.hr.example.EmpSocInfoExample.N_COMPANY_PF_AMOUNT;
import static org.jsola.hr.example.EmpSocInfoExample.N_COMPANY_SOC_AMOUNT;
import static org.jsola.hr.example.EmpSocInfoExample.N_EMP_ID;
import static org.jsola.hr.example.EmpSocInfoExample.N_EMP_ME_STATUS;
import static org.jsola.hr.example.EmpSocInfoExample.N_EMP_PF_STATUS;
import static org.jsola.hr.example.EmpSocInfoExample.N_EMP_SOC_STATUS;
import static org.jsola.hr.example.EmpSocInfoExample.N_GROUP_ID;
import static org.jsola.hr.example.EmpSocInfoExample.N_MONTH;
import static org.jsola.hr.example.EmpSocInfoExample.N_MONTH_ID;
import static org.jsola.hr.example.EmpSocInfoExample.N_PAY_COST_TYPE;
import static org.jsola.hr.example.EmpSocInfoExample.N_PERSONAL_PF_AMOUNT;
import static org.jsola.hr.example.EmpSocInfoExample.N_PERSONAL_SOC_AMOUNT;
import static org.jsola.hr.example.EmpSocInfoExample.N_PLAN_FLAG;
import static org.jsola.hr.example.EmpSocInfoExample.N_PROG_ID;
import static org.jsola.hr.example.EmpSocInfoExample.N_REFUNDS_BEGIN_TIME;
import static org.jsola.hr.example.EmpSocInfoExample.N_REFUNDS_END_TIME;
import static org.jsola.hr.example.EmpSocInfoExample.N_REFUNDS_TYPE;
import static org.jsola.hr.example.EmpSocInfoExample.N_SERVICE_COST;
import static org.jsola.hr.example.EmpSocInfoExample.N_SOCIAL_SECURITY_FINE;
import static org.jsola.hr.example.EmpSocInfoExample.N_SUPPLEMENT_TYPE;
import static org.jsola.hr.example.EmpSocInfoExample.N_WHETHER_LEAVE;
import static org.jsola.hr.example.EmpSocInfoExample.N_YEAR;

/**
 * 员工参保信息表
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "【员工参保信息表】详情展示对象")
@Data
public class EmpSocInfoVO extends BaseVO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID)
    private String id;

    @ApiModelProperty(notes = N_PAY_COST_TYPE, example = E_PAY_COST_TYPE)
    private Integer payCostType;

    @ApiModelProperty(notes = N_PLAN_FLAG, example = E_PLAN_FLAG)
    private Boolean planFlag;

    @ApiModelProperty(notes = N_BUSINESS_TYPE, example = E_BUSINESS_TYPE)
    private Integer businessType;

    @ApiModelProperty(notes = N_SUPPLEMENT_TYPE, example = E_SUPPLEMENT_TYPE)
    private String supplementType;

    @ApiModelProperty(notes = N_EMP_ID, example = E_EMP_ID)
    private String empId;

    @ApiModelProperty(notes = N_PROG_ID, example = E_PROG_ID)
    private String progId;

    @ApiModelProperty(notes = N_MONTH_ID, example = E_MONTH_ID)
    private String monthId;

    @ApiModelProperty(notes = N_YEAR, example = E_YEAR)
    private String year;

    @ApiModelProperty(notes = N_MONTH, example = E_MONTH)
    private String month;

    @ApiModelProperty(notes = N_PERSONAL_SOC_AMOUNT, example = E_PERSONAL_SOC_AMOUNT)
    private BigDecimal personalSocAmount;

    @ApiModelProperty(notes = N_PERSONAL_PF_AMOUNT, example = E_PERSONAL_PF_AMOUNT)
    private BigDecimal personalPfAmount;

    @ApiModelProperty(notes = N_COMPANY_SOC_AMOUNT, example = E_COMPANY_SOC_AMOUNT)
    private BigDecimal companySocAmount;

    @ApiModelProperty(notes = N_COMPANY_PF_AMOUNT, example = E_COMPANY_PF_AMOUNT)
    private BigDecimal companyPfAmount;

    @ApiModelProperty(notes = N_SERVICE_COST, example = E_SERVICE_COST)
    private BigDecimal serviceCost;

    @ApiModelProperty(notes = N_WHETHER_LEAVE, example = E_WHETHER_LEAVE)
    private Boolean whetherLeave;

    @ApiModelProperty(notes = N_SOCIAL_SECURITY_FINE, example = E_SOCIAL_SECURITY_FINE)
    private BigDecimal socialSecurityFine;

    @ApiModelProperty(notes = N_ACCUMULATION_FUND_FINE, example = E_ACCUMULATION_FUND_FINE)
    private BigDecimal accumulationFundFine;

    @ApiModelProperty(notes = N_COMPANY_ID, example = E_COMPANY_ID)
    private String companyId;

    @ApiModelProperty(notes = N_GROUP_ID, example = E_GROUP_ID)
    private String groupId;

    @ApiModelProperty(notes = N_EMP_SOC_STATUS, example = E_EMP_SOC_STATUS)
    private Integer empSocStatus;

    @ApiModelProperty(notes = N_EMP_PF_STATUS, example = E_EMP_PF_STATUS)
    private Integer empPfStatus;

    @ApiModelProperty(notes = N_EMP_ME_STATUS, example = E_EMP_ME_STATUS)
    private Integer empMeStatus;

    @ApiModelProperty(notes = N_REFUNDS_TYPE, example = E_REFUNDS_TYPE)
    private Integer refundsType;

    @ApiModelProperty(notes = N_REFUNDS_BEGIN_TIME, example = E_REFUNDS_BEGIN_TIME)
    private Date refundsBeginTime;

    @ApiModelProperty(notes = N_REFUNDS_END_TIME, example = E_REFUNDS_END_TIME)
    private Date refundsEndTime;

    @ApiModelProperty(notes = N_GMT_CREATE, example = E_GMT_CREATE)
    private Date gmtCreate;

    @ApiModelProperty(notes = N_GMT_MODIFIED, example = E_GMT_MODIFIED)
    private Date gmtModified;

    @ApiModelProperty("社保账号")
    private String socCard;

    @ApiModelProperty("公积金账号")
    private String pfCard;

    @ApiModelProperty(notes = "员工参保信息子项")
    private List<EmpSocItemVO> empSocItemVOList;

    @ApiModelProperty("失业金额(税)")
    private BigDecimal unemploymentInsurance;

    @ApiModelProperty("医疗金额(税)")
    private BigDecimal medicalInsurance;

    @ApiModelProperty("养老金额(税)")
    private BigDecimal pensionInsurance;

    @ApiModelProperty("公积金金额(税)")
    private BigDecimal housingFund;

    @ApiModelProperty("参保方案名称")
    private String socProgName;

    @ApiModelProperty("服务费")
    private BigDecimal serviceCharge;

    @ApiModelProperty("身份证号")
    private String idCard;

    @ApiModelProperty("员工姓名")
    private String empName;

    @ApiModelProperty("是否在缴纳社保")
    private Boolean haveSoc;

    @ApiModelProperty("是否在缴纳医保")
    private Boolean haveMe;

    @ApiModelProperty("是否在缴纳公积金")
    private Boolean havePf;

    @ApiModelProperty("城市编码")
    private String socCity;

    @ApiModelProperty("缴纳城市")
    private String socCityName;

    @ApiModelProperty("排序")
    private Integer sort;
}

